TCP/IP
đ 36. What is TCP/IP, and why is it fundamental for data transmission?â
TCP/IP āĻšāϞ⧠āĻĻā§āĻā§ protocol-āĻāϰ āϏāĻŽāύā§āĻŦāϝāĻŧ:
- đĻ TCP (Transmission Control Protocol) â data āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝāĻāĻžāĻŦā§ āĻĒāĻžāĻ āĻžāύā§āϰ āύāĻŋāϝāĻŧāĻŽ
- đˇī¸ IP (Internet Protocol) â data āĻā§āĻĨāĻžāϝāĻŧ āĻĒāĻžāĻ āĻžāĻŦā§ āϏā§āĻāĻž āĻ āĻŋāĻ āĻāϰāĻžāϰ āύāĻŋāϝāĻŧāĻŽ
āĻāĻ āĻĻā§āĻā§ āĻŽāĻŋāϞ⧠internet-āĻāϰ backbone āϤā§āϰāĻŋ āĻāϰā§āĨ¤ āϤā§āĻŽāĻžāϰ browser āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰ⧠email, video call â āϏāĻŦ āĻāĻŋāĻā§āĻ TCP/IP-āĻāϰ āĻāĻĒāϰ āĻāϞā§āĨ¤
đ TCP/IP Model â 4āĻāĻŋ Layerâ
āĻĒā§āϰāϤāĻŋāĻāĻž layer-āĻāϰ āĻāϞāĻžāĻĻāĻž āĻāĻžāĻ āĻāĻā§ â āĻāĻāĻāĻž āĻāϰā§āĻāĻāĻžāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤
đ ī¸ āĻĒā§āϰāϤāĻŋāĻāĻŋ Layer āĻā§ āĻāϰā§?â
Layer 1 â Network Access Layer (āϏāĻŦāĻžāϰ āύāĻŋāĻā§)â
Physical medium āĻĻāĻŋāϝāĻŧā§ data āĻĒāĻžāĻ āĻžāύā§āϰ āĻāĻžāĻ āĻāϰā§āĨ¤
āĻāĻžāĻ: bits â electrical signal / radio wave / light pulse
āĻāĻĻāĻžāĻšāϰāĻŖ: Ethernet cable, Wi-Fi, fiber optic
Layer 2 â Internet Layerâ
Data āĻā§āύ path āĻĻāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§ āϏā§āĻāĻž āĻ āĻŋāĻ āĻāϰā§āĨ¤
āĻāĻžāĻ: IP address āĻĻā§āĻā§ āϏāĻ āĻŋāĻ destination āĻā§āĻāĻā§
IP packet āϤā§āϰāĻŋ āĻāϰ⧠â source IP + destination IP āϝā§āĻ āĻāϰā§
Router āĻāĻ layer-āĻ āĻāĻžāĻ āĻāϰā§
Layer 3 â Transport Layerâ
Data āύāĻŋāϰā§āĻāϰāϝā§āĻā§āϝāĻāĻžāĻŦā§ āĻĒā§āĻāĻāĻžāĻā§āĻā§ āĻāĻŋāύāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āĨ¤
TCP: āύāĻŋāĻļā§āĻāĻŋāϤ delivery, error check, order maintain
UDP: āĻĻā§āϰā§āϤ āĻāĻŋāύā§āϤ⧠guarantee āύā§āĻ
Port number āĻāĻ layer-āĻ āĻĨāĻžāĻā§ (80, 443, 22...)
Layer 4 â Application Layer (āϏāĻŦāĻžāϰ āĻāĻĒāϰā§)â
User āϝāĻž āĻĻā§āĻā§ āϏā§āĻ data āϤā§āϰāĻŋ āĻšāϝāĻŧ āĻāĻāĻžāύā§āĨ¤
HTTP â webpage
SMTP â email
DNS â domain name lookup
FTP â file transfer
đ TCP āĻā§āĻāĻžāĻŦā§ Data āĻĒāĻžāĻ āĻžāϝāĻŧ?â
āϧāĻžāĻĒ ā§§ â Three-Way Handshake (Connection āϏā§āĻĨāĻžāĻĒāύ)â
Client Server
| |
|âââ SYN âââââââââââââââââ | "āĻāĻŽāĻŋ connect āĻāϰāϤ⧠āĻāĻžāĻ"
| |
| ââââ SYN-ACK ââââââââââââ| "āĻ āĻŋāĻ āĻāĻā§, āĻāĻŽāĻŋ āĻĒā§āϰāϏā§āϤā§āϤ"
| |
|âââ ACK âââââââââââââââââ | "āĻāĻŽā§āĻāĻžāϰ, āĻļā§āϰ⧠āĻāϰāĻŋ"
| |
|====== Data Transfer ======|
āϧāĻžāĻĒ ā§¨ â Data Segmentation (āĻāĻžāĻ āĻāϰāĻž)â
āĻŦāĻĄāĻŧ data āĻāĻāĻŦāĻžāϰ⧠āĻĒāĻžāĻ āĻžāύ⧠āϝāĻžāϝāĻŧ āύāĻž â TCP āϏā§āĻāĻž āĻā§āĻ āĻā§āĻ segment-āĻ āĻāĻžāĻ āĻāϰā§:
"Hello, how are you doing today?" (32 bytes)
â TCP āĻāĻžāĻ āĻāϰā§
Segment 1: "Hello, how" [Seq: 1]
Segment 2: " are you do" [Seq: 2]
Segment 3: "ing today?" [Seq: 3]
āĻĒā§āϰāϤāĻŋāĻāĻž segment-āĻ āĻĨāĻžāĻā§:
â Sequence number (order āĻāĻžāύāĻžāϰ āĻāύā§āϝ)
â Checksum (error detect āĻāϰāĻžāϰ āĻāύā§āϝ)
â Source & destination port
āϧāĻžāĻĒ ā§Š â IP Routing (āĻĒāĻĨ āĻā§āĻāĻāĻž)â
TCP segment-āĻāϰ āĻāĻĒāϰ IP āĻāĻāĻāĻž header āϝā§āĻ āĻāϰ⧠â āĻāĻāĻžāĻ packet:
IP Packet:
âââââââââââââââââââââââââââââ ââââââ
â Source IP: 192.168.1.5 â
â Destination IP: 142.250.80.46 â
â TTL: 64 â
âââââââââââââââââââââââââââââââââââ¤
â TCP Segment (data) â
âââââââââââââââââââââââââââââââââââ
Router āĻāĻ destination IP āĻĻā§āĻā§ packet forward āĻāϰā§
āĻĒā§āϰāϤāĻŋāĻāĻž packet āĻāϞāĻžāĻĻāĻž route āύāĻŋāϤ⧠āĻĒāĻžāϰā§!
āϧāĻžāĻĒ ā§Ē â ACK āĻ Retransmissionâ
Sender: Segment 1 āĻĒāĻžāĻ āĻžāϞ⧠â
Receiver: āĻĒā§āϞ⧠â ACK 1 āĻĒāĻžāĻ āĻžāϞ⧠â
Sender: Segment 2 āĻĒāĻžāĻ āĻžāϞ⧠â
Receiver: āĻĒā§āϞ⧠āύāĻž! (lost)
Sender: Timeout â Segment 2 āĻāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāϞ⧠â
Receiver: āĻāĻāύ āĻĒā§āϞ⧠â ACK 2 â
đ§Š āϧāĻžāĻĒ ā§Ģ â Reassembly (āĻā§āĻĄāĻŧāĻž āϞāĻžāĻāĻžāύā§)â
Receiver āĻĒā§āϞ⧠(out of order):
Segment 3, Segment 1, Segment 2
Sequence number āĻĻā§āĻā§ āϏāĻ āĻŋāĻ order-āĻ āϏāĻžāĻāĻžāϝāĻŧ:
Segment 1 + Segment 2 + Segment 3
â
"Hello, how are you doing today?" â
đ āĻāĻāĻāĻž Webpage Load āĻšāĻāϝāĻŧāĻžāϰ āĻĒā§āϰ⧠āϝāĻžāϤā§āϰāĻžâ
āϤā§āĻŽāĻŋ browser-āĻ āϞāĻŋāĻāϞā§: google.com
1. DNS lookup:
google.com â 142.250.80.46 (IP āĻŦā§āϰ āĻāϰāĻž)
2. TCP Handshake:
āϤā§āĻŽāĻžāϰ PC â Google server (SYN/SYN-ACK/ACK)
3. TLS Handshake:
Encrypted connection āϤā§āϰāĻŋ (HTTPS-āĻāϰ āĻāύā§āϝ)
4. HTTP Request:
"GET / HTTP/1.1" āĻĒāĻžāĻ āĻžāύā§
5. IP Routing:
Packet āϤā§āĻŽāĻžāϰ router â ISP â Google-āĻāϰ server
6. HTTP Response:
Google HTML āĻĒāĻžāĻ āĻžāϞ⧠â segments āĻšāϝāĻŧā§ āĻ āϏāϞā§
7. TCP Reassembly:
Segments āĻā§āĻĄāĻŧāĻž āϞā§āĻā§ āĻĒā§āϰ⧠HTML āϤā§āϰāĻŋ āĻšāϞā§
8. Browser render:
āϤā§āĻŽāĻŋ Google āĻĻā§āĻāϤ⧠āĻĒā§āϞ⧠â
đ¯ āĻā§āύ TCP/IP "Fundamental"?â
TCP/IP fundamental āĻāĻžāϰāĻŖ āĻāĻāĻž āĻāĻāĻāĻž universal standard â āϝā§āĻā§āύ⧠device, āϝā§āĻā§āύ⧠OS, āϝā§āĻā§āύ⧠āĻĻā§āĻļ â āϏāĻŦāĻžāĻ āĻāĻāĻ āύāĻŋāϝāĻŧāĻŽā§ āĻāĻĨāĻž āĻŦāϞā§āĨ¤
āϤā§āĻŽāĻžāϰ Android phone (Bangladesh)
â TCP/IP
Apple server (USA)
â TCP/IP
Linux server (Germany)
āϏāĻŦāĻžāĻ āĻāĻāĻ protocol āĻŦā§āĻā§ â interoperability â
TCP/IP āĻāĻžāĻĄāĻŧāĻž āĻĒā§āϰāϤāĻŋāĻāĻž company-āϰ āĻāϞāĻžāĻĻāĻž protocol āĻĨāĻžāĻāϤ⧠āĻāĻŦāĻ āϤāĻžāϰāĻž āĻāĻā§ āĻ āĻĒāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻĨāĻž āĻŦāϞāϤ⧠āĻĒāĻžāϰāϤ⧠āύāĻž â āĻ āĻŋāĻ āϝā§āĻŽāύ āĻĻā§āĻāύ āĻŽāĻžāύā§āώ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϞāĻžāĻĻāĻž āĻāĻžāώāĻžāϝāĻŧ āĻāĻĨāĻž āĻŦāϞāϞ⧠āĻŦā§āĻā§ āύāĻžāĨ¤
đˇī¸ IP = āĻ āĻŋāĻāĻžāύāĻž āϞā§āĻā§ (āĻā§āĻĨāĻžāϝāĻŧ āϝāĻžāĻŦā§)
đĻ TCP = āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āĻĒā§āĻāĻā§ āĻĻā§āϝāĻŧ (āĻ āĻŋāĻāĻŽāϤ⧠āĻĒā§āĻāĻāĻžāϞ⧠āĻāĻŋāύāĻž)
đ TCP/IP āĻāĻāϏāĻžāĻĨā§ = internet-āĻāϰ āĻĄāĻžāĻāĻŦāĻŋāĻāĻžāĻ â āĻāĻŋāĻ āĻŋ āĻāĻžāĻ āĻāϰā§, āĻ āĻŋāĻāĻžāύāĻž āϞāĻŋāĻā§, āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰ⧠āĻĒāĻžāĻ āĻžāϝāĻŧ, āĻšāĻžāϰāĻŋāϝāĻŧā§ āĻā§āϞ⧠āĻāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāϝāĻŧāĨ¤
đ What does the IP layer actually do, and how does it relate to TCP?â
TCP = āĻĄāĻžāĻāĻŦāĻŋāĻāĻžāĻā§āϰ āύāĻŋāϝāĻŧāĻŽāĻāĻžāύā§āύ
(āĻāĻŋāĻ āĻŋ āύāĻŽā§āĻŦāϰ āĻĻāĻžāĻ, āĻšāĻžāϰāĻžāϞ⧠āĻāĻŦāĻžāϰ āĻĒāĻžāĻ āĻžāĻ, order āĻ āĻŋāĻ āϰāĻžāĻ ā§)
IP = āĻĄāĻžāĻāĻĒāĻŋāϝāĻŧāύ
(āĻ āĻŋāĻāĻžāύāĻž āĻĻā§āĻā§, āϰāĻžāϏā§āϤāĻž āĻā§āĻāĻā§, āĻĻāϰāĻāĻžāϝāĻŧ āĻĒā§āĻāĻā§ āĻĻā§āϝāĻŧ)
āĻāĻāĻž TCP āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻž â āĻāĻžāύ⧠āύāĻž āĻā§āĻĨāĻžāϝāĻŧ āϝāĻžāĻŦā§
āĻāĻāĻž IP āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻž â āĻāĻžāύ⧠āύāĻž āĻĒā§āĻāĻāĻžāϞ⧠āĻāĻŋāύāĻž
āĻāĻāϏāĻžāĻĨā§ TCP/IP = āϏāĻŽā§āĻĒā§āϰā§āĻŖ delivery system
đ IP Layer-āĻāϰ āĻŽā§āϞ ā§ŠāĻāĻŋ āĻāĻžāĻâ
đ āĻāĻžāĻ ā§§: Addressing â āĻĒā§āϰāϤāĻŋāĻāĻŋ Packet-āĻ āĻ āĻŋāĻāĻžāύāĻž āϞā§āĻāĻžâ
TCP āϝāĻāύ data-āĻā§ segments-āĻ āĻāĻžāĻ āĻāϰā§, IP āϏā§āĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ segment-āĻāϰ āĻāĻĒāϰ āĻāĻāĻāĻž header āĻā§āĻĄāĻŧā§ āĻĻā§āϝāĻŧ:
TCP Segment (āĻļā§āϧ⧠data):
ââââââââââââââââââââââââââââ
â Port 443 â Port 52341 â
â Seq: 1, Data: "Hello" â
ââââââââââââââââââââââââââââ
IP Header āϝā§āĻ āĻāϰāĻžāϰ āĻĒāϰ (IP Packet):
ââââââââââââââââââââââââââââââââââââââââ
â Source IP: 192.168.1.5 â
â Destination IP: 142.250.80.46 â
â TTL: 64 â
â Protocol: TCP (6) â
ââââââââââââââââââââââââââââââââââââââââ¤
â TCP Segment āĻā§āϤāϰ⧠āĻāĻā§ (payload) â
ââââââââââââââââââââââââââââââââââââââââ
TTL (Time To Live) āĻāĻāĻāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ field â āĻĒā§āϰāϤāĻŋāĻāĻŋ router-āĻ āĻāĻāĻž 1 āĻāϰ⧠āĻāĻŽā§āĨ¤ āĻļā§āύā§āϝ āĻšāϞ⧠packet āĻŽā§āĻā§ āϝāĻžāϝāĻŧ â āĻāϤ⧠infinite loop āĻŦāύā§āϧ āĻšāϝāĻŧāĨ¤
đēī¸ āĻāĻžāĻ ā§¨: Routing â āϏāĻ āĻŋāĻ āĻĒāĻĨā§ āĻĒāĻžāĻ āĻžāύā§â
IP-āĻāϰ āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻāĻžāĻ āĻšāϞ⧠packet-āĻā§ āϏāĻ āĻŋāĻ destination-āĻ āĻĒā§āĻāĻā§ āĻĻā§āĻāϝāĻŧāĻžāĨ¤ āĻāĻāĻž āĻšāϝāĻŧ hop by hop â router āĻĨā§āĻā§ router: āĻĒā§āϰāϤāĻŋāĻāĻŋ router āĻāĻāĻāĻžāĻ āĻĒā§āϰāĻļā§āύ āĻāϰā§: "āĻāĻ destination IP-āĻāϰ āĻāύā§āϝ āĻāĻŽāĻžāϰ next hop āĻā§?" â routing table āĻĻā§āĻā§ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύā§āϝāĻŧ, āϤāĻžāϰāĻĒāϰ forward āĻāϰā§āĨ¤
IP-āĻāϰ āĻāĻāĻāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻšāϞ⧠āĻāĻāĻž "best effort" â packet āĻĒā§āĻāĻāĻžāĻŦā§ āĻāĻŋāύāĻž, āĻāϤāĻā§āώāĻŖ āϞāĻžāĻāĻŦā§, order āĻ āĻŋāĻ āĻĨāĻžāĻāĻŦā§ āĻāĻŋāύ āĻž â āĻāϰ āĻā§āύ⧠guarantee āύā§āĻāĨ¤ āĻāĻāĻž TCP-āĻāϰ āĻāĻžāĻāĨ¤
đĒ āĻāĻžāĻ ā§Š: Fragmentation â āĻŦāĻĄāĻŧ Packet āĻāĻžāĻāĻžâ
āĻĒā§āϰāϤāĻŋāĻāĻŋ network link-āĻāϰ āĻāĻāĻāĻž MTU (Maximum Transmission Unit) āĻāĻā§ â āϏāϰā§āĻŦā§āĻā§āĻ āĻāϤ āĻŦāĻĄāĻŧ packet āĻĒāĻžāĻ āĻžāύ⧠āϝāĻžāĻŦā§āĨ¤
Ethernet MTU = 1500 bytes
āϤā§āĻŽāĻžāϰ packet = 4000 bytes â āϧāϰ⧠āύāĻž!
IP āĻā§āĻā§ āĻĢā§āϞā§:
Fragment 1: bytes 1â1480 [offset: 0, MF=1]
Fragment 2: bytes 1481â2960 [offset: 185, MF=1]
Fragment 3: bytes 2961â4000 [offset: 370, MF=0]
MF = More Fragments flag
MF=1 āĻŽāĻžāύ⧠āĻāϰ⧠āĻāϏāĻā§, MF=0 āĻŽāĻžāύ⧠āĻļā§āώ fragment
Destination-āĻ IP āϏāĻŦ fragment āĻā§āĻĄāĻŧāĻž āϞāĻžāĻāĻŋāϝāĻŧā§ āĻāĻŦāĻžāϰ āĻŽā§āϞ packet āϤā§āϰāĻŋ āĻāϰā§āĨ¤
đ¤ TCP āĻāϰ IP āĻā§āĻāĻžāĻŦā§ āĻāĻāϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§â
āĻāĻāĻžāĻ āϏāĻŦāĻā§āϝāĻŧā§ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻ āĻāĻļāĨ¤ āĻĻā§āĻā§ layer-āĻāϰ āĻāĻžāĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϞāĻžāĻĻāĻž āĻāĻŋāύā§āϤ⧠āĻāĻā§ āĻ āĻĒāϰā§āϰ āĻĒāϰāĻŋāĻĒā§āϰāĻ:
āϤā§āĻŽāĻŋ browser-āĻ "Send" āĻāĻžāĻĒāϞā§:
Application Layer:
HTTP request āϤā§āϰāĻŋ: "GET /index.html"
â
Transport Layer (TCP):
Data-āĻā§ segments-āĻ āĻāĻžāĻ āĻāϰā§
Sequence number āĻĻā§āϝāĻŧ: Seg-1, Seg-2, Seg-3
Port number āϝā§āĻ āĻāϰā§: 52341 â 443
â
Internet Layer (IP):
āĻĒā§āϰāϤāĻŋāĻāĻŋ segment-āĻ IP header āϝā§āĻ āĻāϰā§
Source: 192.168.1.5, Dest: 142.250.80.46
Packet āϤā§āϰāĻŋ āĻšāϝāĻŧ
â
Network Layer:
Binary bits āĻšāϝāĻŧā§ cable/Wi-Fi āĻĻāĻŋāϝāĻŧā§ āϝāĻžāϝāĻŧ
âââââââ Network āĻĒāĻžāϰ āĻšāϝāĻŧā§ âââââââ
Receiver-āĻāϰ Network Layer:
Bits â packet
â
IP Layer:
Header āĻā§āϞ⧠āĻĻā§āĻā§ â āĻāĻāĻž āĻāĻŋ āĻāĻŽāĻžāϰ āĻāύā§āϝ? āĻšā§āϝāĻžāĻ!
TCP segment āĻŦā§āϰ āĻāϰ⧠āĻāĻĒāϰ⧠āĻĻā§āϝāĻŧ
â
TCP Layer:
Sequence number āĻĻā§āĻā§ order āĻ āĻŋāĻ āĻāϰā§
ACK āĻĒāĻžāĻ āĻžāϝāĻŧ
āĻĒā§āϰ⧠data āĻā§āĻĄāĻŧāĻž āϞāĻžāĻāĻžāϝāĻŧ
â
Application:
"GET /index.html" āĻĒā§āϞā§, response āĻĒāĻžāĻ āĻžāϝāĻŧ